perm filename HASH06.FAI[SYS,HE] blob sn#004148 filedate 1972-09-13 generic text, type T, neo UTF8
00100		ENTRY HASH,REHASH
00200		FF←0
00300		A←1
00400		B←2
00500		C←3
00600		D←4
00700		X←5
00800		Y←6
00900		Z←7
01000		Q←10
01100		AA←11
01200		SP←16
01300		P←17
01400	
01500		TITLE HASH06
01600	
01700		BITS←6
01800		IFE BITS-6,{PRIME←3⎇
01900		IFE BITS-7,{PRIME←5⎇
02000		IFE BITS-10,{PRIME←13⎇
02100		IFE BITS-11,{PRIME←23⎇
02200		IFE BITS-12,{PRIME←45⎇
02300		CMASK←7777⊗(BITS-12)
02400		BMASK←CMASK⊗-2
02500	HASH:	POP SP,D		;POINTER
02600		POP SP,C		;COUNT
02700		ANDI C,-1
02800		SETZB A,R
02900		AOS R
03000		ILDB A,D
03100		IMULI A,PRIME
03200		SOJLE C,L2
03300	L1:	ILDB B,D
03400		ADDI A,(B)
03500		SOJG C,L1
03600		IMULI A,PRIME
03700	L2:	ANDI A,BMASK
03800		MOVEM A,H
03900		POPJ P,
04000	REHASH:MOVE A,R
04100		IMULI A,5
04200		ANDI A,CMASK
04300		MOVEM A,R
04400		LSH A,-2
04500		JUMPE A,E1
04600		ADD A,H
04700		ANDI A,BMASK
04800		POPJ P,
04900	E1:	MOVEI A,[ASCIZ/SYMBOL TABLE FULL/]
05000	      	CALLI A,3
05100		CALLI A,12
05200	R:	Z
05300	H:	Z
05400		END